referential transparency - significado y definición. Qué es referential transparency
Diclib.com
Diccionario en línea

Qué (quién) es referential transparency - definición

PROPERTY OF SOME COMPUTER SOFTWARE EXPRESSIONS AND FUNCTIONS
Referential transparancy; Transparency (referential); Referentially transparent; Referentially opaque; Referential transparency (computer science)

referential transparency         
<programming> An expression E is referentially transparent if any subexpression and its value (the result of evaluating it) can be interchanged without changing the value of E. This is not the case if the value of an expression depends on global state which can change value. The most common example of changing global state is assignment to a global variable. For example, if y is a global variable in: f(x) return x+y; g(z) { a = f(1); y = y + z; return a + f(1); } function g has the "side-effect" that it alters the value of y. Since f's result depends on y, the two calls to f(1) will return different results even though the argument is the same. Thus f is not referentially transparent. Changing the order of evaluation of the statements in g will change its result. Pure functional languages achieve referential transparency by forbidding assignment to global variables. Each expression is a constant or a function application whose evaluation has no side-effect, it only returns a value and that value depends only on the definition of the function and the values of its arguments. We could make f above referentially transparent by passing in y as an argument: f(x, y) = x+y Similarly, g would need to take y as an argument and return its new value as part of the result: g(z, y) { a = f(1, y); y' = y+z; return (a + f(1, y'), y'); } Referentially transparent programs are more amenable to formal methods and easier to reason about because the meaning of an expression depends only on the meaning of its subexpressions and not on the order of evaluation or side-effects of other expressions. We can stretch the concept of referential transparency to include input and output if we consider the whole program to be a function from its input to its output. The program as a whole is referentially transparent because it will always produce the same output when given the same input. This is stretching the concept because the program's input may include what the user types, the content of certain files or even the time of day. If we do not consider global state like the contents of files as input, then writing to a file and reading what was written behaves just like assignment to a global variable. However, if we must consider the state of the universe as an input rather than global state then any deterministic system would be referentially transparent! See also extensional equality, observational equivalence. (1997-03-25)
Referential transparency         
In computer science, referential transparency and referential opacity are properties of parts of computer programs. An expression is called referentially transparent if it can be replaced with its corresponding value (and vice-versa) without changing the program's behavior.
referentially transparent         

Wikipedia

Referential transparency

In computer science, referential transparency and referential opacity are properties of parts of computer programs. An expression is called referentially transparent if it can be replaced with its corresponding value (and vice-versa) without changing the program's behavior. This requires that the expression be pure – its value must be the same for the same inputs and its evaluation must have no side effects. An expression that is not referentially transparent is called referentially opaque.

In mathematics, all function applications are referentially transparent, by the definition of what constitutes a mathematical function. However, this is not always the case in programming, where the terms procedure and method are used to avoid misleading connotations. A defining characteristic of functional programming is that it only allows referentially transparent functions. Other programming languages may provide means to selectively guarantee referential transparency. Some functional programming languages enforce referential transparency for all functions.

The importance of referential transparency is that it allows the programmer and the compiler to reason about program behavior as a rewrite system. This can help in proving correctness, simplifying an algorithm, assisting in modifying code without breaking it, or optimizing code by means of memoization, common subexpression elimination, lazy evaluation, or parallelization.